home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / ScriptLayout.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  7KB  |  172 lines

  1. /*
  2.      File:        ScriptLayout.h
  3.  
  4.      Contains:    Script Layout Interfaces
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __SCRIPTLAYOUT__
  19. #define __SCRIPTLAYOUT__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __MIXEDMODE__
  25. #include <MixedMode.h>
  26. #endif
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif
  31.  
  32. #if PRAGMA_IMPORT_SUPPORTED
  33. #pragma import on
  34. #endif
  35.  
  36. #if PRAGMA_ALIGN_SUPPORTED
  37. #pragma options align=mac68k
  38. #endif
  39.  
  40. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  41. struct OffPair {
  42.     short                             offFirst;
  43.     short                             offSecond;
  44. };
  45. typedef struct OffPair OffPair;
  46.  
  47. typedef OffPair OffsetTable[3];
  48. #endif
  49. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  50.  
  51. enum {
  52.                                                                 /* CharToPixel directions */
  53.     leftCaret                    = 0,                            /*Place caret for left block*/
  54.     rightCaret                    = -1,                            /*Place caret for right block*/
  55.     kHilite                        = 1,                            /*Direction is SysDirection*/
  56.     smLeftCaret                    = 0,                            /*Place caret for left block - obsolete */
  57.     smRightCaret                = -1,                            /*Place caret for right block - obsolete */
  58.     smHilite                    = 1,                            /*Direction is TESysJust - obsolete */
  59.                                                                 /*Constants for styleRunPosition argument in PortionLine, DrawJustified, MeasureJustified, CharToPixel, and PixelToChar.*/
  60.     onlyStyleRun                = 0,                            /* This is the only style run on the line */
  61.     leftStyleRun                = 1,                            /* This is leftmost of multiple style runs on the line */
  62.     rightStyleRun                = 2,                            /* This is rightmost of multiple style runs on the line */
  63.     middleStyleRun                = 3,                            /* There are multiple style runs on the line and this is neither the leftmost nor the rightmost. */
  64.     smOnlyStyleRun                = 0,                            /* obsolete */
  65.     smLeftStyleRun                = 1,                            /* obsolete */
  66.     smRightStyleRun                = 2,                            /* obsolete */
  67.     smMiddleStyleRun            = 3                                /* obsolete */
  68. };
  69.  
  70. /* type for styleRunPosition parameter in PixelToChar etc. */
  71. typedef short JustStyleCode;
  72. typedef short FormatOrder[1];
  73. typedef FormatOrder *FormatOrderPtr;
  74. /* move FormatStatus to TextUtils.i */
  75. typedef pascal Boolean (*StyleRunDirectionProcPtr)(short styleRunIndex, void *dirParam);
  76.  
  77. #if GENERATINGCFM
  78. typedef UniversalProcPtr StyleRunDirectionUPP;
  79. #else
  80. typedef StyleRunDirectionProcPtr StyleRunDirectionUPP;
  81. #endif
  82.  
  83. enum {
  84.     uppStyleRunDirectionProcInfo = kPascalStackBased
  85.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  86.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  87.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void *)))
  88. };
  89.  
  90. #if GENERATINGCFM
  91. #define NewStyleRunDirectionProc(userRoutine)        \
  92.         (StyleRunDirectionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppStyleRunDirectionProcInfo, GetCurrentArchitecture())
  93. #else
  94. #define NewStyleRunDirectionProc(userRoutine)        \
  95.         ((StyleRunDirectionUPP) (userRoutine))
  96. #endif
  97.  
  98. #if GENERATINGCFM
  99. #define CallStyleRunDirectionProc(userRoutine, styleRunIndex, dirParam)        \
  100.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppStyleRunDirectionProcInfo, (styleRunIndex), (dirParam))
  101. #else
  102. #define CallStyleRunDirectionProc(userRoutine, styleRunIndex, dirParam)        \
  103.         (*(userRoutine))((styleRunIndex), (dirParam))
  104. #endif
  105. extern pascal short Pixel2Char(Ptr textBuf, short textLen, short slop, short pixelWidth, Boolean *leadingEdge)
  106.  FOURWORDINLINE(0x2F3C, 0x820E, 0x0014, 0xA8B5);
  107.  
  108. extern pascal short Char2Pixel(Ptr textBuf, short textLen, short slop, short offset, short direction)
  109.  FOURWORDINLINE(0x2F3C, 0x820C, 0x0016, 0xA8B5);
  110.  
  111. extern pascal short PixelToChar(Ptr textBuf, long textLength, Fixed slop, Fixed pixelWidth, Boolean *leadingEdge, Fixed *widthRemaining, JustStyleCode styleRunPosition, Point numer, Point denom)
  112.  FOURWORDINLINE(0x2F3C, 0x8222, 0x002E, 0xA8B5);
  113.  
  114. extern pascal short CharToPixel(Ptr textBuf, long textLength, Fixed slop, long offset, short direction, JustStyleCode styleRunPosition, Point numer, Point denom)
  115.  FOURWORDINLINE(0x2F3C, 0x821C, 0x0030, 0xA8B5);
  116.  
  117. extern pascal void DrawJustified(Ptr textPtr, long textLength, Fixed slop, JustStyleCode styleRunPosition, Point numer, Point denom)
  118.  FOURWORDINLINE(0x2F3C, 0x8016, 0x0032, 0xA8B5);
  119.  
  120. extern pascal void MeasureJustified(Ptr textPtr, long textLength, Fixed slop, Ptr charLocs, JustStyleCode styleRunPosition, Point numer, Point denom)
  121.  FOURWORDINLINE(0x2F3C, 0x801A, 0x0034, 0xA8B5);
  122.  
  123. extern pascal Fixed PortionLine(Ptr textPtr, long textLen, JustStyleCode styleRunPosition, Point numer, Point denom)
  124.  FOURWORDINLINE(0x2F3C, 0x8412, 0x0036, 0xA8B5);
  125.  
  126. extern pascal void HiliteText(Ptr textPtr, short textLength, short firstOffset, short secondOffset, OffsetTable offsets)
  127.  FOURWORDINLINE(0x2F3C, 0x800E, 0x001C, 0xA8B5);
  128.  
  129. extern pascal void DrawJust(Ptr textPtr, short textLength, short slop)
  130.  FOURWORDINLINE(0x2F3C, 0x8008, 0x001E, 0xA8B5);
  131.  
  132. extern pascal void MeasureJust(Ptr textPtr, short textLength, short slop, Ptr charLocs)
  133.  FOURWORDINLINE(0x2F3C, 0x800C, 0x0020, 0xA8B5);
  134.  
  135. extern pascal Fixed PortionText(Ptr textPtr, long textLength)
  136.  FOURWORDINLINE(0x2F3C, 0x8408, 0x0024, 0xA8B5);
  137.  
  138. extern pascal long VisibleLength(Ptr textPtr, long textLength)
  139.  FOURWORDINLINE(0x2F3C, 0x8408, 0x0028, 0xA8B5);
  140.  
  141. extern pascal void GetFormatOrder(FormatOrderPtr ordering, short firstFormat, short lastFormat, Boolean lineRight, StyleRunDirectionUPP rlDirProc, Ptr dirParam)
  142.  FOURWORDINLINE(0x2F3C, 0x8012, 0xFFFC, 0xA8B5);
  143.  
  144. #if OLDROUTINENAMES
  145. #define NPixel2Char(textBuf, textLen, slop, pixelWidth, leadingEdge, widthRemaining, styleRunPosition, numer, denom) \
  146.     PixelToChar(textBuf, textLen, slop, pixelWidth, leadingEdge, widthRemaining, styleRunPosition, numer, denom) 
  147. #define NChar2Pixel(textBuf, textLen, slop, offset, direction, styleRunPosition, numer, denom) \
  148.     CharToPixel(textBuf, textLen, slop, offset, direction, styleRunPosition, numer, denom)
  149. #define NDrawJust(textPtr, textLength, slop, styleRunPosition, numer, denom) \
  150.     DrawJustified(textPtr, textLength, slop, styleRunPosition, numer, denom)
  151. #define NMeasureJust(textPtr, textLength, slop, charLocs, styleRunPosition, numer, denom) \
  152.     MeasureJustified(textPtr, textLength, slop, charLocs, styleRunPosition, numer, denom)
  153. #define NPortionText(textPtr, textLen, styleRunPosition, numer, denom)\
  154.     PortionLine(textPtr, textLen, styleRunPosition, numer, denom)
  155. #endif
  156. #endif
  157.  
  158. #if PRAGMA_ALIGN_SUPPORTED
  159. #pragma options align=reset
  160. #endif
  161.  
  162. #if PRAGMA_IMPORT_SUPPORTED
  163. #pragma import off
  164. #endif
  165.  
  166. #ifdef __cplusplus
  167. }
  168. #endif
  169.  
  170. #endif /* __SCRIPTLAYOUT__ */
  171.  
  172.